[INFO] cloning repository https://github.com/rolftimmermans/slope
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rolftimmermans/slope" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frolftimmermans%2Fslope", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frolftimmermans%2Fslope'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b357650671869758f43d35f04eb47c80174662f8
[INFO] fixing rolftimmermans/slope against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frolftimmermans%2Fslope" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/rolftimmermans/slope
[INFO] finished tweaking git repo https://github.com/rolftimmermans/slope
[INFO] tweaked toml for git repo https://github.com/rolftimmermans/slope written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/rolftimmermans/slope on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/rolftimmermans/slope already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 8e5cfed6739f617020065acca120e283084b13b85ad90139b812978331c9edc3
[INFO] running `Command { std: "docker" "start" "8e5cfed6739f617020065acca120e283084b13b85ad90139b812978331c9edc3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8e5cfed6739f617020065acca120e283084b13b85ad90139b812978331c9edc3" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8e5cfed6739f617020065acca120e283084b13b85ad90139b812978331c9edc3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8e5cfed6739f617020065acca120e283084b13b85ad90139b812978331c9edc3" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating slope-derive/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating slope-parse/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating slope-types/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating slope-vm/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr] note: Switching to Edition 2021 will enable the use of the version 2 feature resolver in Cargo.
[INFO] [stderr] This may cause some dependencies to be built with fewer features enabled than previously.
[INFO] [stderr] More information about the resolver changes may be found at https://doc.rust-lang.org/nightly/edition-guide/rust-2021/default-cargo-resolver.html
[INFO] [stderr] When building the following dependencies, the given features will no longer be used:
[INFO] [stderr] 
[INFO] [stderr]   libc v0.2.76 (as host dependency) removed features: default, extra_traits, std
[INFO] [stderr]   log v0.4.11 removed features: std
[INFO] [stderr]   rand_core v0.5.1 removed features: alloc, getrandom, std
[INFO] [stderr]   regex v1.3.9 (as host dependency) removed features: aho-corasick, default, memchr, perf, perf-cache, perf-dfa, perf-inline, perf-literal, thread_local, unicode, unicode-age, unicode-bool, unicode-case, unicode-gencat, unicode-perl, unicode-script, unicode-segment
[INFO] [stderr]   regex-syntax v0.6.18 (as host dependency) removed features: default, unicode, unicode-age, unicode-bool, unicode-case, unicode-gencat, unicode-perl, unicode-script, unicode-segment
[INFO] [stderr]   syn v1.0.39 removed features: full
[INFO] [stderr] 
[INFO] [stderr] The following differences only apply when building with dev-dependencies:
[INFO] [stderr] 
[INFO] [stderr]   rand v0.7.3 removed features: rand_pcg, small_rng
[INFO] [stderr] 
[INFO] [stderr]    Compiling libc v0.2.76
[INFO] [stderr]    Compiling getrandom v0.1.14
[INFO] [stderr]    Compiling memchr v2.3.3
[INFO] [stderr]    Compiling proc-macro2 v1.0.19
[INFO] [stderr]    Compiling cfg-if v0.1.10
[INFO] [stderr]    Compiling syn v1.0.39
[INFO] [stderr]    Compiling version_check v0.9.2
[INFO] [stderr]    Compiling unicode-xid v0.2.1
[INFO] [stderr]    Compiling proc-macro-hack v0.5.18
[INFO] [stderr]    Compiling typenum v1.12.0
[INFO] [stderr]    Compiling log v0.4.11
[INFO] [stderr]    Compiling hashbrown v0.8.2
[INFO] [stderr]    Compiling nom v5.1.2
[INFO] [stderr]    Compiling quote v1.0.7
[INFO] [stderr]    Compiling im-rc v15.0.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.9
[INFO] [stderr]    Compiling siphasher v0.3.3
[INFO] [stderr]    Compiling phf_shared v0.8.0
[INFO] [stderr]    Compiling lazy_static v1.4.0
[INFO] [stderr]    Compiling thread_local v1.0.1
[INFO] [stderr]    Compiling aho-corasick v0.7.13
[INFO] [stderr]    Compiling rand_core v0.5.1
[INFO] [stderr]    Compiling const-random-macro v0.1.8
[INFO] [stderr]    Compiling indexmap v1.5.1
[INFO] [stderr]    Compiling rand_pcg v0.2.1
[INFO] [stderr]    Compiling rand_chacha v0.2.2
[INFO] [stderr]    Compiling bitflags v1.2.1
[INFO] [stderr]    Compiling regex-syntax v0.6.18
[INFO] [stderr]    Compiling cc v1.0.59
[INFO] [stderr]    Compiling rand v0.7.3
[INFO] [stderr]     Checking ahash v0.3.8
[INFO] [stderr]     Checking bitmaps v2.1.0
[INFO] [stderr]     Checking const-random v0.1.8
[INFO] [stderr]    Compiling cmake v0.1.44
[INFO] [stderr]     Checking ahash v0.4.4
[INFO] [stderr]     Checking rand_xoshiro v0.4.0
[INFO] [stderr]    Compiling nix v0.17.0
[INFO] [stderr]     Checking lasso v0.3.1
[INFO] [stderr]     Checking sized-chunks v0.6.2
[INFO] [stderr]    Compiling libmimalloc-sys v0.1.16
[INFO] [stderr]     Checking bytecount v0.6.0
[INFO] [stderr]    Compiling phf_generator v0.8.0
[INFO] [stderr]     Checking smol_str v0.1.16
[INFO] [stderr]     Checking unicode_categories v0.1.1
[INFO] [stderr]     Checking strsim v0.10.0
[INFO] [stderr]    Compiling regex v1.3.9
[INFO] [stderr]     Checking nom_locate v2.0.0
[INFO] [stderr]     Checking slope-parse v0.1.0 (/opt/rustwide/workdir/slope-parse)
[INFO] [stderr]    Migrating slope-parse/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]    Compiling synstructure v0.12.4
[INFO] [stderr]     Checking dirs-sys v0.3.5
[INFO] [stderr]     Checking simple_logger v1.6.0
[INFO] [stderr]     Checking unicode-width v0.1.8
[INFO] [stderr]     Checking utf8parse v0.2.0
[INFO] [stderr]     Checking unicode-segmentation v1.6.0
[INFO] [stderr]     Checking void v1.0.2
[INFO] [stderr]     Checking dirs v3.0.1
[INFO] [stderr]     Checking mimalloc v0.1.20
[INFO] [stderr]    Compiling slope-vm v0.1.0 (/opt/rustwide/workdir/slope-vm)
[INFO] [stderr]    Migrating slope-vm/build.rs from 2018 edition to 2021
[INFO] [stderr]     Checking env_logger v0.7.1
[INFO] [stderr]     Checking termcolor v1.1.0
[INFO] [stderr]     Checking quickcheck v0.9.2
[INFO] [stderr]    Compiling slope-derive v0.1.0 (/opt/rustwide/workdir/slope-derive)
[INFO] [stderr]    Compiling phf_macros v0.8.0
[INFO] [stderr]    Compiling rustyline-derive v0.3.1
[INFO] [stderr]    Compiling quickcheck_macros v0.9.1
[INFO] [stderr]    Migrating slope-derive/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking phf v0.8.0
[INFO] [stderr]     Checking slope-types v0.1.0 (/opt/rustwide/workdir/slope-types)
[INFO] [stderr]    Migrating slope-types/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking rustyline v6.2.0
[INFO] [stderr]    Migrating slope-vm/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking slope v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating slope-types/tests/test.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/lib.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating slope-vm/tests/all.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/main.rs from 2018 edition to 2021
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 03s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v5.1.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
[INFO] [stderr] crater-edition-check: slope-derive v0.1.0 (/opt/rustwide/workdir/slope-derive) updating edition from 2018 to 2021
[INFO] [stderr] crater-edition-check: slope-parse v0.1.0 (/opt/rustwide/workdir/slope-parse) updating edition from 2018 to 2021
[INFO] [stderr] crater-edition-check: slope-types v0.1.0 (/opt/rustwide/workdir/slope-types) updating edition from 2018 to 2021
[INFO] [stderr] crater-edition-check: slope-vm v0.1.0 (/opt/rustwide/workdir/slope-vm) updating edition from 2018 to 2021
[INFO] [stderr] crater-edition-check: slope v0.1.0 (/opt/rustwide/workdir) updating edition from 2018 to 2021
[INFO] [stderr]    Compiling libc v0.2.76
[INFO] [stderr]    Compiling regex-syntax v0.6.18
[INFO] [stderr]    Compiling slope-derive v0.1.0 (/opt/rustwide/workdir/slope-derive)
[INFO] [stderr]     Checking slope-parse v0.1.0 (/opt/rustwide/workdir/slope-parse)
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stdout] warning: enum `FileName` is never used
[INFO] [stdout]  --> slope-parse/src/source.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum FileName {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SourceFile` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SourceFile {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CharPos` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CharPos(u32);
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PosInfo` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct PosInfo {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `lookup_pos_info`, and `lookup_line` are never used
[INFO] [stdout]   --> slope-parse/src/source.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl SourceFile {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 37 |     pub fn new(name: FileName, offset: BytePos, source: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn lookup_pos_info(&self, offset: BytePos) -> Option<PosInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn lookup_line(&self, offset: BytePos) -> Option<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileName` is never used
[INFO] [stdout]  --> slope-parse/src/source.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum FileName {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SourceFile` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SourceFile {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CharPos` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CharPos(u32);
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PosInfo` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct PosInfo {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `lookup_pos_info`, and `lookup_line` are never used
[INFO] [stdout]   --> slope-parse/src/source.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl SourceFile {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 37 |     pub fn new(name: FileName, offset: BytePos, source: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn lookup_pos_info(&self, offset: BytePos) -> Option<PosInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn lookup_line(&self, offset: BytePos) -> Option<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> slope-parse/src/source.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     Virtual(String),
[INFO] [stdout]   |     ------- ^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `FileName` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]   |
[INFO] [stdout] 8 -     Virtual(String),
[INFO] [stdout] 8 +     Virtual(()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Named` is never constructed
[INFO] [stdout]  --> slope-parse/src/source.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum FileName {
[INFO] [stdout]   |          -------- variant in this enum
[INFO] [stdout] 7 |     Named(PathBuf),
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `FileName` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> slope-parse/src/source.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SourceFile {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 13 |     name: FileName,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SourceFile` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> slope-parse/src/source.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl SourceFile {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 37 |     pub fn new(name: FileName, offset: BytePos, source: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling getrandom v0.1.14
[INFO] [stderr]    Compiling rand_core v0.5.1
[INFO] [stderr]    Compiling const-random-macro v0.1.8
[INFO] [stderr]     Checking quickcheck v0.9.2
[INFO] [stderr]    Compiling rand_pcg v0.2.1
[INFO] [stderr]    Compiling rand_chacha v0.2.2
[INFO] [stderr]     Checking const-random v0.1.8
[INFO] [stderr]     Checking ahash v0.4.4
[INFO] [stderr]     Checking lasso v0.3.1
[INFO] [stderr]    Compiling regex v1.3.9
[INFO] [stderr]     Checking slope-types v0.1.0 (/opt/rustwide/workdir/slope-types)
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> slope-types/src/trace.rs:177:26
[INFO] [stdout]     |
[INFO] [stdout] 177 |                 for t in self {
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 while let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 if let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Test` is never constructed
[INFO] [stdout]    --> slope-types/src/value.rs:375:12
[INFO] [stdout]     |
[INFO] [stdout] 375 |     struct Test<T: Clone + Debug + Trace + 'static>(T);
[INFO] [stdout]     |            ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> slope-types/src/trace.rs:177:26
[INFO] [stdout]     |
[INFO] [stdout] 177 |                 for t in self {
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 while let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 if let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> slope-types/src/trace.rs:177:26
[INFO] [stdout]     |
[INFO] [stdout] 177 |                 for t in self {
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 while let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 if let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling phf_generator v0.8.0
[INFO] [stderr]    Compiling phf_macros v0.8.0
[INFO] [stderr]    Compiling slope-vm v0.1.0 (/opt/rustwide/workdir/slope-vm)
[INFO] [stderr]     Checking phf v0.8.0
[INFO] [stdout] warning: unused imports: `ops::Range` and `swap`
[INFO] [stdout]   --> slope-vm/src/vm.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 |     mem::{replace, size_of, swap, take, transmute},
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 16 |     ops::Range,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Module` and `self`
[INFO] [stdout]   --> slope-vm/src/vm.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     compile::{self, Compiler, Module, Scope, SyntaxError},
[INFO] [stdout]    |               ^^^^            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Range` and `swap`
[INFO] [stdout]   --> slope-vm/src/vm.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 |     mem::{replace, size_of, swap, take, transmute},
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 16 |     ops::Range,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Module` and `self`
[INFO] [stdout]   --> slope-vm/src/vm.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     compile::{self, Compiler, Module, Scope, SyntaxError},
[INFO] [stdout]    |               ^^^^            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Range` and `swap`
[INFO] [stdout]   --> slope-vm/src/vm.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 |     mem::{replace, size_of, swap, take, transmute},
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 16 |     ops::Range,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Module` and `self`
[INFO] [stdout]   --> slope-vm/src/vm.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     compile::{self, Compiler, Module, Scope, SyntaxError},
[INFO] [stdout]    |               ^^^^            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BuiltinIndex` is never constructed
[INFO] [stdout]    --> slope-vm/src/vm.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct BuiltinIndex(u16);
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Display` is never constructed
[INFO] [stdout]    --> slope-vm/src/vm.rs:242:5
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub enum Instruction {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 242 |     Display {
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Instruction` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `disasm` is never used
[INFO] [stdout]    --> slope-vm/src/vm.rs:756:12
[INFO] [stdout]     |
[INFO] [stdout] 755 | impl<'gc> Executable<'gc> {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] 756 |     pub fn disasm(&self) -> impl Iterator<Item = &Instruction> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking slope v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]   --> src/lib.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     panic::PanicInfo,
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]    --> src/lib.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn panic_handler(info: &PanicInfo) {
[INFO] [stdout]     |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BuiltinIndex` is never constructed
[INFO] [stdout]    --> slope-vm/src/vm.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct BuiltinIndex(u16);
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Display` is never constructed
[INFO] [stdout]    --> slope-vm/src/vm.rs:242:5
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub enum Instruction {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 242 |     Display {
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Instruction` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `disasm` is never used
[INFO] [stdout]    --> slope-vm/src/vm.rs:756:12
[INFO] [stdout]     |
[INFO] [stdout] 755 | impl<'gc> Executable<'gc> {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] 756 |     pub fn disasm(&self) -> impl Iterator<Item = &Instruction> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BuiltinIndex` is never constructed
[INFO] [stdout]    --> slope-vm/src/vm.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct BuiltinIndex(u16);
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Display` is never constructed
[INFO] [stdout]    --> slope-vm/src/vm.rs:242:5
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub enum Instruction {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 242 |     Display {
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Instruction` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]   --> src/lib.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     panic::PanicInfo,
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]    --> src/lib.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn panic_handler(info: &PanicInfo) {
[INFO] [stdout]     |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]   --> src/lib.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     panic::PanicInfo,
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]    --> src/lib.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn panic_handler(info: &PanicInfo) {
[INFO] [stdout]     |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 16s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v5.1.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating slope-derive/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating slope-parse/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating slope-types/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating slope-vm/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr] note: Switching to Edition 2021 will enable the use of the version 2 feature resolver in Cargo.
[INFO] [stderr] This may cause some dependencies to be built with fewer features enabled than previously.
[INFO] [stderr] More information about the resolver changes may be found at https://doc.rust-lang.org/nightly/edition-guide/rust-2021/default-cargo-resolver.html
[INFO] [stderr] When building the following dependencies, the given features will no longer be used:
[INFO] [stderr] 
[INFO] [stderr]   libc v0.2.76 (as host dependency) removed features: default, extra_traits, std
[INFO] [stderr]   log v0.4.11 removed features: std
[INFO] [stderr]   rand_core v0.5.1 removed features: alloc, getrandom, std
[INFO] [stderr]   regex v1.3.9 (as host dependency) removed features: aho-corasick, default, memchr, perf, perf-cache, perf-dfa, perf-inline, perf-literal, thread_local, unicode, unicode-age, unicode-bool, unicode-case, unicode-gencat, unicode-perl, unicode-script, unicode-segment
[INFO] [stderr]   regex-syntax v0.6.18 (as host dependency) removed features: default, unicode, unicode-age, unicode-bool, unicode-case, unicode-gencat, unicode-perl, unicode-script, unicode-segment
[INFO] [stderr]   syn v1.0.39 removed features: full
[INFO] [stderr] 
[INFO] [stderr] The following differences only apply when building with dev-dependencies:
[INFO] [stderr] 
[INFO] [stderr]   rand v0.7.3 removed features: rand_pcg, small_rng
[INFO] [stderr] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> slope-types/src/trace.rs:177:26
[INFO] [stdout]     |
[INFO] [stdout] 177 |                 for t in self {
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 while let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 if let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileName` is never used
[INFO] [stdout]  --> slope-parse/src/source.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum FileName {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SourceFile` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SourceFile {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CharPos` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CharPos(u32);
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PosInfo` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct PosInfo {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `lookup_pos_info`, and `lookup_line` are never used
[INFO] [stdout]   --> slope-parse/src/source.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl SourceFile {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 37 |     pub fn new(name: FileName, offset: BytePos, source: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn lookup_pos_info(&self, offset: BytePos) -> Option<PosInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn lookup_line(&self, offset: BytePos) -> Option<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Range` and `swap`
[INFO] [stdout]   --> slope-vm/src/vm.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 |     mem::{replace, size_of, swap, take, transmute},
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 16 |     ops::Range,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Module` and `self`
[INFO] [stdout]   --> slope-vm/src/vm.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     compile::{self, Compiler, Module, Scope, SyntaxError},
[INFO] [stdout]    |               ^^^^            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BuiltinIndex` is never constructed
[INFO] [stdout]    --> slope-vm/src/vm.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct BuiltinIndex(u16);
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Display` is never constructed
[INFO] [stdout]    --> slope-vm/src/vm.rs:242:5
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub enum Instruction {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 242 |     Display {
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Instruction` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `disasm` is never used
[INFO] [stdout]    --> slope-vm/src/vm.rs:756:12
[INFO] [stdout]     |
[INFO] [stdout] 755 | impl<'gc> Executable<'gc> {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] 756 |     pub fn disasm(&self) -> impl Iterator<Item = &Instruction> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> slope-types/src/trace.rs:177:26
[INFO] [stdout]     |
[INFO] [stdout] 177 |                 for t in self {
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 while let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 if let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileName` is never used
[INFO] [stdout]  --> slope-parse/src/source.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum FileName {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SourceFile` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SourceFile {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CharPos` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CharPos(u32);
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PosInfo` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct PosInfo {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `lookup_pos_info`, and `lookup_line` are never used
[INFO] [stdout]   --> slope-parse/src/source.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl SourceFile {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 37 |     pub fn new(name: FileName, offset: BytePos, source: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn lookup_pos_info(&self, offset: BytePos) -> Option<PosInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn lookup_line(&self, offset: BytePos) -> Option<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Range` and `swap`
[INFO] [stdout]   --> slope-vm/src/vm.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 |     mem::{replace, size_of, swap, take, transmute},
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 16 |     ops::Range,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Module` and `self`
[INFO] [stdout]   --> slope-vm/src/vm.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     compile::{self, Compiler, Module, Scope, SyntaxError},
[INFO] [stdout]    |               ^^^^            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BuiltinIndex` is never constructed
[INFO] [stdout]    --> slope-vm/src/vm.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct BuiltinIndex(u16);
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Display` is never constructed
[INFO] [stdout]    --> slope-vm/src/vm.rs:242:5
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub enum Instruction {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 242 |     Display {
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Instruction` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `disasm` is never used
[INFO] [stdout]    --> slope-vm/src/vm.rs:756:12
[INFO] [stdout]     |
[INFO] [stdout] 755 | impl<'gc> Executable<'gc> {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] 756 |     pub fn disasm(&self) -> impl Iterator<Item = &Instruction> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking slope v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking slope-derive v0.1.0 (/opt/rustwide/workdir/slope-derive)
[INFO] [stderr]     Checking slope-types v0.1.0 (/opt/rustwide/workdir/slope-types)
[INFO] [stderr]     Checking slope-vm v0.1.0 (/opt/rustwide/workdir/slope-vm)
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]   --> src/lib.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     panic::PanicInfo,
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]    --> src/lib.rs:134:29
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn panic_handler(info: &PanicInfo) {
[INFO] [stdout]     |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating slope-types/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed slope-types/src/gc.rs (9 fixes)
[INFO] [stderr]    Migrating slope-derive/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed slope-types/src/value.rs (2 fixes)
[INFO] [stderr]        Fixed slope-types/src/lib.rs (4 fixes)
[INFO] [stderr]        Fixed slope-derive/lib.rs (1 fix)
[INFO] [stderr]    Migrating slope-vm/tests/all.rs from 2021 edition to 2024
[INFO] [stderr]     Checking slope-parse v0.1.0 (/opt/rustwide/workdir/slope-parse)
[INFO] [stderr]    Migrating slope-types/tests/test.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/main.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating slope-vm/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed slope-vm/src/syntax.rs (9 fixes)
[INFO] [stderr]    Migrating slope-parse/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed slope-vm/src/vm.rs (1 fix)
[INFO] [stderr]        Fixed slope-vm/src/compile.rs (5 fixes)
[INFO] [stderr]        Fixed slope-vm/src/macros.rs (4 fixes)
[INFO] [stdout] warning: `impl Iterator<Item = syntax::Match>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:69
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:26
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                          ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]     = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 21s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v5.1.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
[INFO] [stderr] crater-edition-check: slope-derive v0.1.0 (/opt/rustwide/workdir/slope-derive) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: slope-parse v0.1.0 (/opt/rustwide/workdir/slope-parse) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: slope-types v0.1.0 (/opt/rustwide/workdir/slope-types) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: slope-vm v0.1.0 (/opt/rustwide/workdir/slope-vm) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: slope v0.1.0 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]    Compiling slope-derive v0.1.0 (/opt/rustwide/workdir/slope-derive)
[INFO] [stderr]    Compiling slope-vm v0.1.0 (/opt/rustwide/workdir/slope-vm)
[INFO] [stderr]     Checking slope-parse v0.1.0 (/opt/rustwide/workdir/slope-parse)
[INFO] [stdout] warning: enum `FileName` is never used
[INFO] [stdout]  --> slope-parse/src/source.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum FileName {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SourceFile` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SourceFile {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CharPos` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CharPos(u32);
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PosInfo` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct PosInfo {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `lookup_pos_info`, and `lookup_line` are never used
[INFO] [stdout]   --> slope-parse/src/source.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl SourceFile {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 37 |     pub fn new(name: FileName, offset: BytePos, source: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn lookup_pos_info(&self, offset: BytePos) -> Option<PosInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn lookup_line(&self, offset: BytePos) -> Option<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileName` is never used
[INFO] [stdout]  --> slope-parse/src/source.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum FileName {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SourceFile` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SourceFile {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CharPos` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CharPos(u32);
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PosInfo` is never constructed
[INFO] [stdout]   --> slope-parse/src/source.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct PosInfo {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `lookup_pos_info`, and `lookup_line` are never used
[INFO] [stdout]   --> slope-parse/src/source.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl SourceFile {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 37 |     pub fn new(name: FileName, offset: BytePos, source: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn lookup_pos_info(&self, offset: BytePos) -> Option<PosInfo> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn lookup_line(&self, offset: BytePos) -> Option<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking slope-types v0.1.0 (/opt/rustwide/workdir/slope-types)
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> slope-parse/src/source.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     Virtual(String),
[INFO] [stdout]   |     ------- ^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `FileName` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]   |
[INFO] [stdout] 8 -     Virtual(String),
[INFO] [stdout] 8 +     Virtual(()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Named` is never constructed
[INFO] [stdout]  --> slope-parse/src/source.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum FileName {
[INFO] [stdout]   |          -------- variant in this enum
[INFO] [stdout] 7 |     Named(PathBuf),
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `FileName` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> slope-parse/src/source.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct SourceFile {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 13 |     name: FileName,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SourceFile` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> slope-parse/src/source.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl SourceFile {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 37 |     pub fn new(name: FileName, offset: BytePos, source: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> slope-types/src/trace.rs:177:26
[INFO] [stdout]     |
[INFO] [stdout] 177 |                 for t in self {
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 while let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 if let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/expr.rs:22:51
[INFO] [stdout]    |
[INFO] [stdout] 22 | #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, Trace)]
[INFO] [stdout]    |                                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/expr.rs:42:51
[INFO] [stdout]    |
[INFO] [stdout] 42 | #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, Trace)]
[INFO] [stdout]    |                                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/expr.rs:61:51
[INFO] [stdout]    |
[INFO] [stdout] 61 | #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, Trace)]
[INFO] [stdout]    |                                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/vm.rs:44:10
[INFO] [stdout]    |
[INFO] [stdout] 44 | #[derive(Trace)]
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/vm.rs:96:61
[INFO] [stdout]    |
[INFO] [stdout] 96 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]    |                                                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/vm.rs:99:61
[INFO] [stdout]    |
[INFO] [stdout] 99 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]    |                                                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:102:61
[INFO] [stdout]     |
[INFO] [stdout] 102 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]     |                                                             ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:105:61
[INFO] [stdout]     |
[INFO] [stdout] 105 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]     |                                                             ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:108:61
[INFO] [stdout]     |
[INFO] [stdout] 108 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]     |                                                             ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:111:68
[INFO] [stdout]     |
[INFO] [stdout] 111 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Trace)]
[INFO] [stdout]     |                                                                    ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:132:51
[INFO] [stdout]     |
[INFO] [stdout] 132 | #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Trace)]
[INFO] [stdout]     |                                                   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:249:10
[INFO] [stdout]     |
[INFO] [stdout] 249 | #[derive(Trace)]
[INFO] [stdout]     |          ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Range` and `swap`
[INFO] [stdout]   --> slope-vm/src/vm.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 |     mem::{replace, size_of, swap, take, transmute},
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 16 |     ops::Range,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Module` and `self`
[INFO] [stdout]   --> slope-vm/src/vm.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     compile::{self, Compiler, Module, Scope, SyntaxError},
[INFO] [stdout]    |               ^^^^            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Test` is never constructed
[INFO] [stdout]    --> slope-types/src/value.rs:375:12
[INFO] [stdout]     |
[INFO] [stdout] 375 |     struct Test<T: Clone + Debug + Trace + 'static>(T);
[INFO] [stdout]     |            ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> slope-types/src/trace.rs:177:26
[INFO] [stdout]     |
[INFO] [stdout] 177 |                 for t in self {
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 while let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 if let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over a `&Option`. This is more readably written as an `if let` statement
[INFO] [stdout]    --> slope-types/src/trace.rs:177:26
[INFO] [stdout]     |
[INFO] [stdout] 177 |                 for t in self {
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to check pattern in a loop use `while let`
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 while let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]     |
[INFO] [stdout] 177 -                 for t in self {
[INFO] [stdout] 177 +                 if let Some(t) = self {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/expr.rs:22:51
[INFO] [stdout]    |
[INFO] [stdout] 22 | #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, Trace)]
[INFO] [stdout]    |                                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/expr.rs:42:51
[INFO] [stdout]    |
[INFO] [stdout] 42 | #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, Trace)]
[INFO] [stdout]    |                                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/expr.rs:61:51
[INFO] [stdout]    |
[INFO] [stdout] 61 | #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, Trace)]
[INFO] [stdout]    |                                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/vm.rs:44:10
[INFO] [stdout]    |
[INFO] [stdout] 44 | #[derive(Trace)]
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/vm.rs:96:61
[INFO] [stdout]    |
[INFO] [stdout] 96 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]    |                                                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/vm.rs:99:61
[INFO] [stdout]    |
[INFO] [stdout] 99 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]    |                                                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:102:61
[INFO] [stdout]     |
[INFO] [stdout] 102 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]     |                                                             ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:105:61
[INFO] [stdout]     |
[INFO] [stdout] 105 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]     |                                                             ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:108:61
[INFO] [stdout]     |
[INFO] [stdout] 108 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]     |                                                             ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:111:68
[INFO] [stdout]     |
[INFO] [stdout] 111 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Trace)]
[INFO] [stdout]     |                                                                    ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:132:51
[INFO] [stdout]     |
[INFO] [stdout] 132 | #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Trace)]
[INFO] [stdout]     |                                                   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:249:10
[INFO] [stdout]     |
[INFO] [stdout] 249 | #[derive(Trace)]
[INFO] [stdout]     |          ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/expr.rs:22:51
[INFO] [stdout]    |
[INFO] [stdout] 22 | #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, Trace)]
[INFO] [stdout]    |                                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/expr.rs:42:51
[INFO] [stdout]    |
[INFO] [stdout] 42 | #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, Trace)]
[INFO] [stdout]    |                                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/expr.rs:61:51
[INFO] [stdout]    |
[INFO] [stdout] 61 | #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, Trace)]
[INFO] [stdout]    |                                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/vm.rs:44:10
[INFO] [stdout]    |
[INFO] [stdout] 44 | #[derive(Trace)]
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/vm.rs:96:61
[INFO] [stdout]    |
[INFO] [stdout] 96 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]    |                                                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]   --> slope-vm/src/vm.rs:99:61
[INFO] [stdout]    |
[INFO] [stdout] 99 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]    |                                                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:102:61
[INFO] [stdout]     |
[INFO] [stdout] 102 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]     |                                                             ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:105:61
[INFO] [stdout]     |
[INFO] [stdout] 105 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]     |                                                             ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:108:61
[INFO] [stdout]     |
[INFO] [stdout] 108 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Trace)]
[INFO] [stdout]     |                                                             ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:111:68
[INFO] [stdout]     |
[INFO] [stdout] 111 | #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Trace)]
[INFO] [stdout]     |                                                                    ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:132:51
[INFO] [stdout]     |
[INFO] [stdout] 132 | #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Trace)]
[INFO] [stdout]     |                                                   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: proc-macro derive panicked
[INFO] [stdout]    --> slope-vm/src/vm.rs:249:10
[INFO] [stdout]     |
[INFO] [stdout] 249 | #[derive(Trace)]
[INFO] [stdout]     |          ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: Failed to parse gen_impl: Error("unexpected end of input, expected token tree")
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Range` and `swap`
[INFO] [stdout]   --> slope-vm/src/vm.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 |     mem::{replace, size_of, swap, take, transmute},
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 16 |     ops::Range,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Module` and `self`
[INFO] [stdout]   --> slope-vm/src/vm.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     compile::{self, Compiler, Module, Scope, SyntaxError},
[INFO] [stdout]    |               ^^^^            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `trace` found for struct `Executable<'gc>` in the current scope
[INFO] [stdout]    --> slope-vm/src/vm.rs:745:25
[INFO] [stdout]     |
[INFO] [stdout]  45 | pub struct Executable<'gc> {
[INFO] [stdout]     | -------------------------- method `trace` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 745 |         self.executable.trace(tracer);
[INFO] [stdout]     |                         ^^^^^ method not found in `Executable<'gc>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: slope-types/src/trace.rs:16:8
[INFO] [stdout]     |
[INFO] [stdout]  16 |     fn trace(&self, tracer: &mut impl Tracer);
[INFO] [stdout]     |        -----
[INFO] [stdout]     |        |
[INFO] [stdout]     |        the method is available for `Rc<Executable<'gc>>` here
[INFO] [stdout]     |        the method is available for `Rc<&mut Executable<'gc>>` here
[INFO] [stdout]     |        the method is available for `Rc<&Executable<'gc>>` here
[INFO] [stdout]     |
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 745 |         self.executable.constants.trace(tracer);
[INFO] [stdout]     |                         ++++++++++
[INFO] [stdout] 745 |         self.executable.functions.trace(tracer);
[INFO] [stdout]     |                         ++++++++++
[INFO] [stdout] help: consider wrapping the receiver expression with the appropriate type
[INFO] [stdout]     |
[INFO] [stdout] 745 |         Rc::new(self.executable).trace(tracer);
[INFO] [stdout]     |         ++++++++               +
[INFO] [stdout] help: consider wrapping the receiver expression with the appropriate type
[INFO] [stdout]     |
[INFO] [stdout] 745 |         Rc::new(&mut self.executable).trace(tracer);
[INFO] [stdout]     |         ++++++++++++                +
[INFO] [stdout] help: consider wrapping the receiver expression with the appropriate type
[INFO] [stdout]     |
[INFO] [stdout] 745 |         Rc::new(&self.executable).trace(tracer);
[INFO] [stdout]     |         +++++++++               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Range` and `swap`
[INFO] [stdout]   --> slope-vm/src/vm.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 |     mem::{replace, size_of, swap, take, transmute},
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 16 |     ops::Range,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Module` and `self`
[INFO] [stdout]   --> slope-vm/src/vm.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     compile::{self, Compiler, Module, Scope, SyntaxError},
[INFO] [stdout]    |               ^^^^            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:141:16
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let params = matches.get_repeating("param").unwrap();
[INFO] [stdout]     |                  ------- first mutable borrow occurs here
[INFO] [stdout] 141 |     let body = matches.get_repeating("body").unwrap();
[INFO] [stdout]     |                ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] 142 |
[INFO] [stdout] 143 |     let params = params.filter_map(Match::into_single).collect();
[INFO] [stdout]     |                  ------ first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:140:18
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let params = matches.get_repeating("param").unwrap();
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:170:17
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ------- first mutable borrow occurs here
[INFO] [stdout] 170 |     let inits = matches.get_repeating("init").unwrap();
[INFO] [stdout]     |                 ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 173 |     let mut bindings = Vec::with_capacity(variables.size_hint().0);
[INFO] [stdout]     |                                           --------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:169:21
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:171:16
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ------- first mutable borrow occurs here
[INFO] [stdout] 170 |     let inits = matches.get_repeating("init").unwrap();
[INFO] [stdout] 171 |     let body = matches.get_repeating("body").unwrap();
[INFO] [stdout]     |                ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] 172 |
[INFO] [stdout] 173 |     let mut bindings = Vec::with_capacity(variables.size_hint().0);
[INFO] [stdout]     |                                           --------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:169:21
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:239:24
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 239 |     let mut literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                        ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:240:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 239 |     let mut literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout] 240 |     let patterns = matches.get_repeating("pattern").unwrap();
[INFO] [stdout]     |                    ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:241:21
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 241 |     let templates = matches.get_repeating("template").unwrap();
[INFO] [stdout]     |                     ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:242:16
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 242 |     let body = matches.get_repeating("body").unwrap();
[INFO] [stdout]     |                ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] 243 |
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:300:20
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 300 |     let patterns = matches.get_repeating("pattern").unwrap();
[INFO] [stdout]     |                    ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 305 |     syntax.literals = literals.filter_map(Match::into_single).collect();
[INFO] [stdout]     |                       -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:299:20
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:301:21
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 300 |     let patterns = matches.get_repeating("pattern").unwrap();
[INFO] [stdout] 301 |     let templates = matches.get_repeating("template").unwrap();
[INFO] [stdout]     |                     ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 305 |     syntax.literals = literals.filter_map(Match::into_single).collect();
[INFO] [stdout]     |                       -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:299:20
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `trace` found for struct `Executable<'gc>` in the current scope
[INFO] [stdout]    --> slope-vm/src/vm.rs:745:25
[INFO] [stdout]     |
[INFO] [stdout]  45 | pub struct Executable<'gc> {
[INFO] [stdout]     | -------------------------- method `trace` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 745 |         self.executable.trace(tracer);
[INFO] [stdout]     |                         ^^^^^ method not found in `Executable<'gc>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: slope-types/src/trace.rs:16:8
[INFO] [stdout]     |
[INFO] [stdout]  16 |     fn trace(&self, tracer: &mut impl Tracer);
[INFO] [stdout]     |        -----
[INFO] [stdout]     |        |
[INFO] [stdout]     |        the method is available for `Rc<Executable<'gc>>` here
[INFO] [stdout]     |        the method is available for `Rc<&mut Executable<'gc>>` here
[INFO] [stdout]     |        the method is available for `Rc<&Executable<'gc>>` here
[INFO] [stdout]     |
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 745 |         self.executable.constants.trace(tracer);
[INFO] [stdout]     |                         ++++++++++
[INFO] [stdout] 745 |         self.executable.functions.trace(tracer);
[INFO] [stdout]     |                         ++++++++++
[INFO] [stdout] help: consider wrapping the receiver expression with the appropriate type
[INFO] [stdout]     |
[INFO] [stdout] 745 |         Rc::new(self.executable).trace(tracer);
[INFO] [stdout]     |         ++++++++               +
[INFO] [stdout] help: consider wrapping the receiver expression with the appropriate type
[INFO] [stdout]     |
[INFO] [stdout] 745 |         Rc::new(&mut self.executable).trace(tracer);
[INFO] [stdout]     |         ++++++++++++                +
[INFO] [stdout] help: consider wrapping the receiver expression with the appropriate type
[INFO] [stdout]     |
[INFO] [stdout] 745 |         Rc::new(&self.executable).trace(tracer);
[INFO] [stdout]     |         +++++++++               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `trace` found for struct `vm::Executable<'gc>` in the current scope
[INFO] [stdout]    --> slope-vm/src/vm.rs:745:25
[INFO] [stdout]     |
[INFO] [stdout]  45 | pub struct Executable<'gc> {
[INFO] [stdout]     | -------------------------- method `trace` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 745 |         self.executable.trace(tracer);
[INFO] [stdout]     |                         ^^^^^ method not found in `vm::Executable<'gc>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: slope-types/src/trace.rs:16:8
[INFO] [stdout]     |
[INFO] [stdout]  16 |     fn trace(&self, tracer: &mut impl Tracer);
[INFO] [stdout]     |        -----
[INFO] [stdout]     |        |
[INFO] [stdout]     |        the method is available for `Rc<vm::Executable<'gc>>` here
[INFO] [stdout]     |        the method is available for `Rc<&mut vm::Executable<'gc>>` here
[INFO] [stdout]     |        the method is available for `Rc<&vm::Executable<'gc>>` here
[INFO] [stdout]     |
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 745 |         self.executable.constants.trace(tracer);
[INFO] [stdout]     |                         ++++++++++
[INFO] [stdout] 745 |         self.executable.functions.trace(tracer);
[INFO] [stdout]     |                         ++++++++++
[INFO] [stdout] help: consider wrapping the receiver expression with the appropriate type
[INFO] [stdout]     |
[INFO] [stdout] 745 |         Rc::new(self.executable).trace(tracer);
[INFO] [stdout]     |         ++++++++               +
[INFO] [stdout] help: consider wrapping the receiver expression with the appropriate type
[INFO] [stdout]     |
[INFO] [stdout] 745 |         Rc::new(&mut self.executable).trace(tracer);
[INFO] [stdout]     |         ++++++++++++                +
[INFO] [stdout] help: consider wrapping the receiver expression with the appropriate type
[INFO] [stdout]     |
[INFO] [stdout] 745 |         Rc::new(&self.executable).trace(tracer);
[INFO] [stdout]     |         +++++++++               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0499, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0499`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `slope-vm` (lib) due to 22 previous errors; 2 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:141:16
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let params = matches.get_repeating("param").unwrap();
[INFO] [stdout]     |                  ------- first mutable borrow occurs here
[INFO] [stdout] 141 |     let body = matches.get_repeating("body").unwrap();
[INFO] [stdout]     |                ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] 142 |
[INFO] [stdout] 143 |     let params = params.filter_map(Match::into_single).collect();
[INFO] [stdout]     |                  ------ first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:140:18
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let params = matches.get_repeating("param").unwrap();
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:170:17
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ------- first mutable borrow occurs here
[INFO] [stdout] 170 |     let inits = matches.get_repeating("init").unwrap();
[INFO] [stdout]     |                 ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 173 |     let mut bindings = Vec::with_capacity(variables.size_hint().0);
[INFO] [stdout]     |                                           --------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:169:21
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:171:16
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ------- first mutable borrow occurs here
[INFO] [stdout] 170 |     let inits = matches.get_repeating("init").unwrap();
[INFO] [stdout] 171 |     let body = matches.get_repeating("body").unwrap();
[INFO] [stdout]     |                ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] 172 |
[INFO] [stdout] 173 |     let mut bindings = Vec::with_capacity(variables.size_hint().0);
[INFO] [stdout]     |                                           --------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:169:21
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:141:16
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let params = matches.get_repeating("param").unwrap();
[INFO] [stdout]     |                  ------- first mutable borrow occurs here
[INFO] [stdout] 141 |     let body = matches.get_repeating("body").unwrap();
[INFO] [stdout]     |                ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] 142 |
[INFO] [stdout] 143 |     let params = params.filter_map(Match::into_single).collect();
[INFO] [stdout]     |                  ------ first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:140:18
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let params = matches.get_repeating("param").unwrap();
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:170:17
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ------- first mutable borrow occurs here
[INFO] [stdout] 170 |     let inits = matches.get_repeating("init").unwrap();
[INFO] [stdout]     |                 ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 173 |     let mut bindings = Vec::with_capacity(variables.size_hint().0);
[INFO] [stdout]     |                                           --------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:169:21
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:171:16
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ------- first mutable borrow occurs here
[INFO] [stdout] 170 |     let inits = matches.get_repeating("init").unwrap();
[INFO] [stdout] 171 |     let body = matches.get_repeating("body").unwrap();
[INFO] [stdout]     |                ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] 172 |
[INFO] [stdout] 173 |     let mut bindings = Vec::with_capacity(variables.size_hint().0);
[INFO] [stdout]     |                                           --------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:169:21
[INFO] [stdout]     |
[INFO] [stdout] 169 |     let variables = matches.get_repeating("variable").unwrap();
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:239:24
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 239 |     let mut literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                        ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:240:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 239 |     let mut literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout] 240 |     let patterns = matches.get_repeating("pattern").unwrap();
[INFO] [stdout]     |                    ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:241:21
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 241 |     let templates = matches.get_repeating("template").unwrap();
[INFO] [stdout]     |                     ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:242:16
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 242 |     let body = matches.get_repeating("body").unwrap();
[INFO] [stdout]     |                ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] 243 |
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:239:24
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 239 |     let mut literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                        ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:240:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 239 |     let mut literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout] 240 |     let patterns = matches.get_repeating("pattern").unwrap();
[INFO] [stdout]     |                    ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:241:21
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 241 |     let templates = matches.get_repeating("template").unwrap();
[INFO] [stdout]     |                     ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:242:16
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 242 |     let body = matches.get_repeating("body").unwrap();
[INFO] [stdout]     |                ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] 243 |
[INFO] [stdout] 244 |     let mut bindings = Vec::with_capacity(keywords.size_hint().0);
[INFO] [stdout]     |                                           -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let keywords = matches.get_repeating("keyword").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:300:20
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 300 |     let patterns = matches.get_repeating("pattern").unwrap();
[INFO] [stdout]     |                    ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 305 |     syntax.literals = literals.filter_map(Match::into_single).collect();
[INFO] [stdout]     |                       -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:299:20
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:301:21
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 300 |     let patterns = matches.get_repeating("pattern").unwrap();
[INFO] [stdout] 301 |     let templates = matches.get_repeating("template").unwrap();
[INFO] [stdout]     |                     ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 305 |     syntax.literals = literals.filter_map(Match::into_single).collect();
[INFO] [stdout]     |                       -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:299:20
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:300:20
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 300 |     let patterns = matches.get_repeating("pattern").unwrap();
[INFO] [stdout]     |                    ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 305 |     syntax.literals = literals.filter_map(Match::into_single).collect();
[INFO] [stdout]     |                       -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:299:20
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `matches` as mutable more than once at a time
[INFO] [stdout]    --> slope-vm/src/form.rs:301:21
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ------- first mutable borrow occurs here
[INFO] [stdout] 300 |     let patterns = matches.get_repeating("pattern").unwrap();
[INFO] [stdout] 301 |     let templates = matches.get_repeating("template").unwrap();
[INFO] [stdout]     |                     ^^^^^^^ second mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 305 |     syntax.literals = literals.filter_map(Match::into_single).collect();
[INFO] [stdout]     |                       -------- first borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> slope-vm/src/form.rs:299:20
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let literals = matches.get_repeating("literal").unwrap();
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:42
[INFO] [stdout]     |
[INFO] [stdout] 575 |     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]    --> slope-vm/src/syntax.rs:575:25
[INFO] [stdout]     |
[INFO] [stdout] 575 -     pub fn get_repeating(&mut self, var: impl AsRef<str>) -> Option<impl Iterator<Item = Match>> {
[INFO] [stdout] 575 +     pub fn get_repeating<T: AsRef<str>>(&mut self, var: T) -> Option<impl Iterator<Item = Match> + use<T>> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0499, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0499`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `slope-vm` (lib) due to 22 previous errors; 2 warnings emitted
[INFO] [stdout] Some errors have detailed explanations: E0499, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0499`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `slope-vm` (lib test) due to 22 previous errors; 2 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "8e5cfed6739f617020065acca120e283084b13b85ad90139b812978331c9edc3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8e5cfed6739f617020065acca120e283084b13b85ad90139b812978331c9edc3", kill_on_drop: false }`
[INFO] [stdout] 8e5cfed6739f617020065acca120e283084b13b85ad90139b812978331c9edc3
